package ar.com.psicosoft.model.psicosoft;

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;

/**
 * The persistent class for the nivel_estudio database table.
 * 
 */
@Entity
@Table(name = "nivel_estudio", schema = "psicosoft")
@NamedQueries({
		@NamedQuery(name = "NivelEstudio.buscarPorId", query = "SELECT n FROM NivelEstudio n WHERE n.idNivelEstudio = :idNivelEstudio", lockMode = LockModeType.NONE),
		@NamedQuery(name = "NivelEstudio.buscarPorNombreNivelEstudio", query = "SELECT n FROM NivelEstudio n WHERE n.nombreNivelEstudio = :nombreNivelEstudio", lockMode = LockModeType.NONE),
		@NamedQuery(name = "NivelEstudio.buscarNivelesEstudio", query = "SELECT n FROM NivelEstudio n ORDER BY n.nombreNivelEstudio", lockMode = LockModeType.NONE),
		@NamedQuery(name = "NivelEstudio.eliminarNivelEstudioPorId", query = "DELETE FROM NivelEstudio n WHERE n.idNivelEstudio = :idNivelEstudio", lockMode = LockModeType.NONE) })
public class NivelEstudio implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "sec_nivel_estudio", sequenceName = "psicosoft.sec_nivel_estudio", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec_nivel_estudio")
	@Column(name = "\"idNivelEstudio\"", unique = true, nullable = false, insertable = false, updatable = false)
	private Integer idNivelEstudio;

	@Column(nullable = true)
	private Timestamp baja;

	@Column(name = "\"nombreNivelEstudio\"", nullable = false, length = 30, unique = true)
	private String nombreNivelEstudio;

	// bi-directional many-to-one association to Persona
	// @OneToMany(mappedBy = "nivelEstudio", targetEntity = Persona.class)
	// private List<Persona> personas;

	public NivelEstudio() {
	}

	/**
	 * @param nombreNivelEstudio
	 */
	public NivelEstudio(String nombreNivelEstudio) {
		super();
		this.nombreNivelEstudio = nombreNivelEstudio;
	}

	public Integer getIdNivelEstudio() {
		return this.idNivelEstudio;
	}

	public void setIdNivelEstudio(Integer idNivelEstudio) {
		this.idNivelEstudio = idNivelEstudio;
	}

	public Timestamp getBaja() {
		return this.baja;
	}

	public void setBaja(Timestamp baja) {
		this.baja = baja;
	}

	public String getNombreNivelEstudio() {
		return this.nombreNivelEstudio;
	}

	public void setNombreNivelEstudio(String nombreNivelEstudio) {
		this.nombreNivelEstudio = nombreNivelEstudio;
	}

	/*
	 * public List<Persona> getPersonas() { return this.personas; }
	 * 
	 * public void setPersonas(List<Persona> personas) { this.personas =
	 * personas; }
	 * 
	 * public Persona addPersona(Persona persona) { getPersonas().add(persona);
	 * persona.setNivelEstudio(this);
	 * 
	 * return persona; }
	 * 
	 * public Persona removePersona(Persona persona) {
	 * getPersonas().remove(persona); persona.setNivelEstudio(null);
	 * 
	 * return persona; }
	 */

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((baja == null) ? 0 : baja.hashCode());
		result = prime
				* result
				+ ((nombreNivelEstudio == null) ? 0 : nombreNivelEstudio
						.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		NivelEstudio other = (NivelEstudio) obj;
		if (baja == null) {
			if (other.baja != null)
				return false;
		} else if (!baja.equals(other.baja))
			return false;
		if (nombreNivelEstudio == null) {
			if (other.nombreNivelEstudio != null)
				return false;
		} else if (!nombreNivelEstudio.equals(other.nombreNivelEstudio))
			return false;
		return true;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "NivelEstudio [idNivelEstudio=" + idNivelEstudio + ", baja="
				+ baja + ", nombreNivelEstudio=" + nombreNivelEstudio + "]";
	}

}